module windump.plugins.htmlinput.ie.shdocvw;

import windump.combase;

enum CommandStateChangeConstants {
  CSC_UPDATECOMMANDS = 0xFFFFFFFF,
  CSC_NAVIGATEFORWARD = 0x00000001,
  CSC_NAVIGATEBACK = 0x00000002,
}

enum OLECMDID {
  OLECMDID_OPEN = 0x00000001,
  OLECMDID_NEW = 0x00000002,
  OLECMDID_SAVE = 0x00000003,
  OLECMDID_SAVEAS = 0x00000004,
  OLECMDID_SAVECOPYAS = 0x00000005,
  OLECMDID_PRINT = 0x00000006,
  OLECMDID_PRINTPREVIEW = 0x00000007,
  OLECMDID_PAGESETUP = 0x00000008,
  OLECMDID_SPELL = 0x00000009,
  OLECMDID_PROPERTIES = 0x0000000A,
  OLECMDID_CUT = 0x0000000B,
  OLECMDID_COPY = 0x0000000C,
  OLECMDID_PASTE = 0x0000000D,
  OLECMDID_PASTESPECIAL = 0x0000000E,
  OLECMDID_UNDO = 0x0000000F,
  OLECMDID_REDO = 0x00000010,
  OLECMDID_SELECTALL = 0x00000011,
  OLECMDID_CLEARSELECTION = 0x00000012,
  OLECMDID_ZOOM = 0x00000013,
  OLECMDID_GETZOOMRANGE = 0x00000014,
  OLECMDID_UPDATECOMMANDS = 0x00000015,
  OLECMDID_REFRESH = 0x00000016,
  OLECMDID_STOP = 0x00000017,
  OLECMDID_HIDETOOLBARS = 0x00000018,
  OLECMDID_SETPROGRESSMAX = 0x00000019,
  OLECMDID_SETPROGRESSPOS = 0x0000001A,
  OLECMDID_SETPROGRESSTEXT = 0x0000001B,
  OLECMDID_SETTITLE = 0x0000001C,
  OLECMDID_SETDOWNLOADSTATE = 0x0000001D,
  OLECMDID_STOPDOWNLOAD = 0x0000001E,
  OLECMDID_ONTOOLBARACTIVATED = 0x0000001F,
  OLECMDID_FIND = 0x00000020,
  OLECMDID_DELETE = 0x00000021,
  OLECMDID_HTTPEQUIV = 0x00000022,
  OLECMDID_HTTPEQUIV_DONE = 0x00000023,
  OLECMDID_ENABLE_INTERACTION = 0x00000024,
  OLECMDID_ONUNLOAD = 0x00000025,
  OLECMDID_PROPERTYBAG2 = 0x00000026,
  OLECMDID_PREREFRESH = 0x00000027,
  OLECMDID_SHOWSCRIPTERROR = 0x00000028,
  OLECMDID_SHOWMESSAGE = 0x00000029,
  OLECMDID_SHOWFIND = 0x0000002A,
  OLECMDID_SHOWPAGESETUP = 0x0000002B,
  OLECMDID_SHOWPRINT = 0x0000002C,
  OLECMDID_CLOSE = 0x0000002D,
  OLECMDID_ALLOWUILESSSAVEAS = 0x0000002E,
  OLECMDID_DONTDOWNLOADCSS = 0x0000002F,
  OLECMDID_UPDATEPAGESTATUS = 0x00000030,
  OLECMDID_PRINT2 = 0x00000031,
  OLECMDID_PRINTPREVIEW2 = 0x00000032,
  OLECMDID_SETPRINTTEMPLATE = 0x00000033,
  OLECMDID_GETPRINTTEMPLATE = 0x00000034,
  OLECMDID_PAGEACTIONBLOCKED = 0x00000037,
  OLECMDID_PAGEACTIONUIQUERY = 0x00000038,
  OLECMDID_FOCUSVIEWCONTROLS = 0x00000039,
  OLECMDID_FOCUSVIEWCONTROLSQUERY = 0x0000003A,
  OLECMDID_SHOWPAGEACTIONMENU = 0x0000003B,
}

enum OLECMDF {
  OLECMDF_SUPPORTED = 0x00000001,
  OLECMDF_ENABLED = 0x00000002,
  OLECMDF_LATCHED = 0x00000004,
  OLECMDF_NINCHED = 0x00000008,
  OLECMDF_INVISIBLE = 0x00000010,
  OLECMDF_DEFHIDEONCTXTMENU = 0x00000020,
}

enum OLECMDEXECOPT {
  OLECMDEXECOPT_DODEFAULT = 0x00000000,
  OLECMDEXECOPT_PROMPTUSER = 0x00000001,
  OLECMDEXECOPT_DONTPROMPTUSER = 0x00000002,
  OLECMDEXECOPT_SHOWHELP = 0x00000003,
}

enum tagREADYSTATE {
  READYSTATE_UNINITIALIZED = 0x00000000,
  READYSTATE_LOADING = 0x00000001,
  READYSTATE_LOADED = 0x00000002,
  READYSTATE_INTERACTIVE = 0x00000003,
  READYSTATE_COMPLETE = 0x00000004,
}

enum SecureLockIconConstants {
  secureLockIconUnsecure = 0x00000000,
  secureLockIconMixed = 0x00000001,
  secureLockIconSecureUnknownBits = 0x00000002,
  secureLockIconSecure40Bit = 0x00000003,
  secureLockIconSecure56Bit = 0x00000004,
  secureLockIconSecureFortezza = 0x00000005,
  secureLockIconSecure128Bit = 0x00000006,
}

enum ShellWindowTypeConstants {
  SWC_EXPLORER = 0x00000000,
  SWC_BROWSER = 0x00000001,
  SWC_3RDPARTY = 0x00000002,
  SWC_CALLBACK = 0x00000004,
}

enum ShellWindowFindWindowOptions {
  SWFO_NEEDDISPATCH = 0x00000001,
  SWFO_INCLUDEPENDING = 0x00000002,
  SWFO_COOKIEPASSED = 0x00000004,
}

interface IWebBrowser : IDispatch {
  static GUID IID = { 0xeab22ac1, 0x30c1, 0x11cf, 0xa7, 0xeb, 0x00, 0x00, 0xc0, 0x5b, 0xae, 0x0b };
  int GoBack();
  int GoForward();
  int GoHome();
  int GoSearch();
  int Navigate(in wchar* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers);
  int Refresh();
  int Refresh2(VARIANT* Level);
  int Stop();
  int get_Application(out IDispatch ppDisp);
  int get_Parent(out IDispatch ppDisp);
  int get_Container(out IDispatch ppDisp);
  int get_Document(out IDispatch ppDisp);
  int get_TopLevelContainer(out short pBool);
  int get_Type(out wchar* Type);
  int get_Left(out int pl);
  int set_Left(in int pl);
  int get_Top(out int pl);
  int set_Top(in int pl);
  int get_Width(out int pl);
  int set_Width(in int pl);
  int get_Height(out int pl);
  int set_Height(in int pl);
  int get_LocationName(out wchar* LocationName);
  int get_LocationURL(out wchar* LocationURL);
  int get_Busy(out short pBool);
}

interface DWebBrowserEvents : IDispatch {
  static GUID IID = { 0xeab22ac2, 0x30c1, 0x11cf, 0xa7, 0xeb, 0x00, 0x00, 0xc0, 0x5b, 0xae, 0x0b };
  /+void BeforeNavigate(in wchar* URL, int Flags, wchar* TargetFrameName, VARIANT* PostData, wchar* Headers, inout short Cancel);+/
  /+void NavigateComplete(in wchar* URL);+/
  /+void StatusTextChange(in wchar* Text);+/
  /+void ProgressChange(in int Progress, in int ProgressMax);+/
  /+void DownloadComplete();+/
  /+void CommandStateChange(in int Command, in short Enable);+/
  /+void DownloadBegin();+/
  /+void NewWindow(in wchar* URL, in int Flags, in wchar* TargetFrameName, in VARIANT* PostData, in wchar* Headers, inout short Processed);+/
  /+void TitleChange(in wchar* Text);+/
  /+void FrameBeforeNavigate(in wchar* URL, int Flags, wchar* TargetFrameName, VARIANT* PostData, wchar* Headers, inout short Cancel);+/
  /+void FrameNavigateComplete(in wchar* URL);+/
  /+void FrameNewWindow(in wchar* URL, in int Flags, in wchar* TargetFrameName, in VARIANT* PostData, in wchar* Headers, inout short Processed);+/
  /+void Quit(inout short Cancel);+/
  /+void WindowMove();+/
  /+void WindowResize();+/
  /+void WindowActivate();+/
  /+void PropertyChange(in wchar* Property);+/
}

interface IWebBrowserApp : IWebBrowser {
  static GUID IID = { 0x0002df05, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 };
  int Quit();
  int ClientToWindow(inout int pcx, inout int pcy);
  int PutProperty(in wchar* Property, in VARIANT vtValue);
  int GetProperty(in wchar* Property, out VARIANT pvtValue);
  int get_Name(out wchar* Name);
  int get_HWND(out int pHWND);
  int get_FullName(out wchar* FullName);
  int get_Path(out wchar* Path);
  int get_Visible(out short pBool);
  int set_Visible(in short pBool);
  int get_StatusBar(out short pBool);
  int set_StatusBar(in short pBool);
  int get_StatusText(out wchar* StatusText);
  int set_StatusText(in wchar* StatusText);
  int get_ToolBar(out int Value);
  int set_ToolBar(in int Value);
  int get_MenuBar(out short Value);
  int set_MenuBar(in short Value);
  int get_FullScreen(out short pbFullScreen);
  int set_FullScreen(in short pbFullScreen);
}

interface IWebBrowser2 : IWebBrowserApp {
  static GUID IID = { 0xd30c1661, 0xcdaf, 0x11d0, 0x8a, 0x3e, 0x00, 0xc0, 0x4f, 0xc9, 0xe2, 0x6e };
  int Navigate2(in VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers);
  int QueryStatusWB(in OLECMDID cmdID, out OLECMDF pcmdf);
  int ExecWB(in OLECMDID cmdID, in OLECMDEXECOPT cmdexecopt, VARIANT* pvaIn, VARIANT pvaOut);
  int ShowBrowserBar(in VARIANT* pvaClsid, VARIANT* pvarShow, VARIANT* pvarSize);
  int get_ReadyState(out tagREADYSTATE plReadyState);
  int get_Offline(out short pbOffline);
  int set_Offline(in short pbOffline);
  int get_Silent(out short pbSilent);
  int set_Silent(in short pbSilent);
  int get_RegisterAsBrowser(out short pbRegister);
  int set_RegisterAsBrowser(in short pbRegister);
  int get_RegisterAsDropTarget(out short pbRegister);
  int set_RegisterAsDropTarget(in short pbRegister);
  int get_TheaterMode(out short pbRegister);
  int set_TheaterMode(in short pbRegister);
  int get_AddressBar(out short Value);
  int set_AddressBar(in short Value);
  int get_Resizable(out short Value);
  int set_Resizable(in short Value);
}

interface DWebBrowserEvents2 : IDispatch {
  static GUID IID = { 0x34a715a0, 0x6587, 0x11d0, 0x92, 0x4a, 0x00, 0x20, 0xaf, 0xc7, 0xac, 0x4d };
  /+void StatusTextChange(in wchar* Text);+/
  /+void ProgressChange(in int Progress, in int ProgressMax);+/
  /+void CommandStateChange(in int Command, in short Enable);+/
  /+void DownloadBegin();+/
  /+void DownloadComplete();+/
  /+void TitleChange(in wchar* Text);+/
  /+void PropertyChange(in wchar* szProperty);+/
  /+void BeforeNavigate2(in IDispatch pDisp, in VARIANT* URL, in VARIANT* Flags, in VARIANT* TargetFrameName, in VARIANT* PostData, in VARIANT* Headers, inout short Cancel);+/
  /+void NewWindow2(inout IDispatch ppDisp, inout short Cancel);+/
  /+void NavigateComplete2(in IDispatch pDisp, in VARIANT* URL);+/
  /+void DocumentComplete(in IDispatch pDisp, in VARIANT* URL);+/
  /+void OnQuit();+/
  /+void OnVisible(in short Visible);+/
  /+void OnToolBar(in short ToolBar);+/
  /+void OnMenuBar(in short MenuBar);+/
  /+void OnStatusBar(in short StatusBar);+/
  /+void OnFullScreen(in short FullScreen);+/
  /+void OnTheaterMode(in short TheaterMode);+/
  /+void WindowSetResizable(in short Resizable);+/
  /+void WindowSetLeft(in int Left);+/
  /+void WindowSetTop(in int Top);+/
  /+void WindowSetWidth(in int Width);+/
  /+void WindowSetHeight(in int Height);+/
  /+void WindowClosing(in short IsChildWindow, inout short Cancel);+/
  /+void ClientToHostWindow(inout int CX, inout int CY);+/
  /+void SetSecureLockIcon(in int SecureLockIcon);+/
  /+void FileDownload(inout short Cancel);+/
  /+void NavigateError(in IDispatch pDisp, in VARIANT* URL, in VARIANT* Frame, in VARIANT* StatusCode, inout short Cancel);+/
  /+void PrintTemplateInstantiation(in IDispatch pDisp);+/
  /+void PrintTemplateTeardown(in IDispatch pDisp);+/
  /+void UpdatePageStatus(in IDispatch pDisp, in VARIANT* nPage, in VARIANT* fDone);+/
  /+void PrivacyImpactedStateChange(in short bImpacted);+/
  /+void NewWindow3(inout IDispatch ppDisp, inout short Cancel, in uint dwFlags, in wchar* bstrUrlContext, in wchar* bstrUrl);+/
}

interface DShellWindowsEvents : IDispatch {
  static GUID IID = { 0xfe4106e0, 0x399a, 0x11d0, 0xa4, 0x8c, 0x00, 0xa0, 0xc9, 0x0a, 0x8f, 0x39 };
  /+void WindowRegistered(in int lCookie);+/
  /+void WindowRevoked(in int lCookie);+/
}

interface IShellWindows : IDispatch {
  static GUID IID = { 0x85cb6900, 0x4d95, 0x11cf, 0x96, 0x0c, 0x00, 0x80, 0xc7, 0xf4, 0xee, 0x85 };
  int get_Count(out int Count);
  int Item(VARIANT index, out IDispatch Folder);
  int _NewEnum(out IUnknown ppunk);
  int Register(in IDispatch pid, in int HWND, in int swClass, out int plCookie);
  int RegisterPending(in int lThreadId, in VARIANT* pvarloc, in VARIANT* pvarlocRoot, in int swClass, out int plCookie);
  int Revoke(in int lCookie);
  int OnNavigate(in int lCookie, in VARIANT* pvarloc);
  int OnActivated(in int lCookie, in short fActive);
  int FindWindowSW(in VARIANT* pvarloc, in VARIANT* pvarlocRoot, in int swClass, out int pHWND, in int swfwOptions, out IDispatch ppdispOut);
  int OnCreated(in int lCookie, in IUnknown punk);
  int ProcessAttachDetach(in short fAttach);
}

interface IShellUIHelper : IDispatch {
  static GUID IID = { 0x729fe2f8, 0x1ea8, 0x11d1, 0x8f, 0x85, 0x00, 0xc0, 0x4f, 0xc2, 0xfb, 0xe1 };
  int ResetFirstBootMode();
  int ResetSafeMode();
  int RefreshOfflineDesktop();
  int AddFavorite(in wchar* URL, VARIANT* Title);
  int AddChannel(in wchar* URL);
  int AddDesktopComponent(in wchar* URL, in wchar* Type, VARIANT* Left, VARIANT* Top, VARIANT* Width, VARIANT* Height);
  int IsSubscribed(in wchar* URL, out short pBool);
  int NavigateAndFind(in wchar* URL, in wchar* strQuery, in VARIANT* varTargetFrame);
  int ImportExportFavorites(in short fImport, in wchar* strImpExpPath);
  int AutoCompleteSaveForm(VARIANT* Form);
  int AutoScan(in wchar* strSearch, in wchar* strFailureUrl, VARIANT* pvarTargetFrame);
  int AutoCompleteAttach(VARIANT* Reserved);
  int ShowBrowserUI(in wchar* bstrName, in VARIANT* pvarIn, out VARIANT pvarOut);
}

interface DShellNameSpaceEvents : IDispatch {
  static GUID IID = { 0x55136806, 0xb2de, 0x11d1, 0xb9, 0xf2, 0x00, 0xa0, 0xc9, 0x8b, 0xc5, 0x47 };
  /+void FavoritesSelectionChange(in int cItems, in int hItem, in wchar* strName, in wchar* strUrl, in int cVisits, in wchar* strDate, in int fAvailableOffline);+/
  /+void SelectionChange();+/
  /+void DoubleClick();+/
  /+void Initialized();+/
}

interface IShellFavoritesNameSpace : IDispatch {
  static GUID IID = { 0x55136804, 0xb2de, 0x11d1, 0xb9, 0xf2, 0x00, 0xa0, 0xc9, 0x8b, 0xc5, 0x47 };
  int MoveSelectionUp();
  int MoveSelectionDown();
  int ResetSort();
  int NewFolder();
  int Synchronize();
  int Import();
  int Export();
  int InvokeContextMenuCommand(in wchar* strCommand);
  int MoveSelectionTo();
  int get_SubscriptionsEnabled(out short pBool);
  int CreateSubscriptionForSelection(out short pBool);
  int DeleteSubscriptionForSelection(out short pBool);
  int SetRoot(in wchar* bstrFullPath);
}

interface IShellNameSpace : IShellFavoritesNameSpace {
  static GUID IID = { 0xe572d3c9, 0x37be, 0x4ae2, 0x82, 0x5d, 0xd5, 0x21, 0x76, 0x3e, 0x31, 0x08 };
  int get_EnumOptions(out int pgrfEnumFlags);
  int set_EnumOptions(in int pgrfEnumFlags);
  int get_SelectedItem(out IDispatch pItem);
  int set_SelectedItem(in IDispatch pItem);
  int get_Root(out VARIANT pvar);
  int set_Root(in VARIANT pvar);
  int get_Depth(out int piDepth);
  int set_Depth(in int piDepth);
  int get_Mode(out uint puMode);
  int set_Mode(in uint puMode);
  int get_Flags(out uint pdwFlags);
  int set_Flags(in uint pdwFlags);
  int set_TVFlags(in uint dwFlags);
  int get_TVFlags(out uint dwFlags);
  int get_Columns(out wchar* bstrColumns);
  int set_Columns(in wchar* bstrColumns);
  int get_CountViewTypes(out int piTypes);
  int SetViewType(in int iType);
  int SelectedItems(out IDispatch ppid);
  int Expand(in VARIANT var, int iDepth);
  int UnselectAll();
}

interface IScriptErrorList : IDispatch {
  static GUID IID = { 0xf3470f24, 0x15fd, 0x11d2, 0xbb, 0x2e, 0x00, 0x80, 0x5f, 0xf7, 0xef, 0xca };
  int advanceError();
  int retreatError();
  int canAdvanceError(out int pfCanAdvance);
  int canRetreatError(out int pfCanRetreat);
  int getErrorLine(out int plLine);
  int getErrorChar(out int plChar);
  int getErrorCode(out int plCode);
  int getErrorMsg(out wchar* pstr);
  int getErrorUrl(out wchar* pstr);
  int getAlwaysShowLockState(out int pfAlwaysShowLocked);
  int getDetailsPaneOpen(out int pfDetailsPaneOpen);
  int setDetailsPaneOpen(int fDetailsPaneOpen);
  int getPerErrorDisplay(out int pfPerErrorDisplay);
  int setPerErrorDisplay(int fPerErrorDisplay);
}

interface ISearch : IDispatch {
  static GUID IID = { 0xba9239a4, 0x3dd5, 0x11d2, 0xbf, 0x8b, 0x00, 0xc0, 0x4f, 0xb9, 0x36, 0x61 };
  int get_Title(out wchar* pbstrTitle);
  int get_Id(out wchar* pbstrId);
  int get_URL(out wchar* pbstrUrl);
}

interface ISearches : IDispatch {
  static GUID IID = { 0x47c922a2, 0x3dd5, 0x11d2, 0xbf, 0x8b, 0x00, 0xc0, 0x4f, 0xb9, 0x36, 0x61 };
  int get_Count(out int plCount);
  int get_Default(out wchar* pbstrDefault);
  int Item(VARIANT index, out ISearch ppid);
  int _NewEnum(out IUnknown ppunk);
}

interface ISearchAssistantOC : IDispatch {
  static GUID IID = { 0x72423e8f, 0x8011, 0x11d2, 0xbe, 0x79, 0x00, 0xa0, 0xc9, 0xa8, 0x3d, 0xa1 };
  int AddNextMenuItem(in wchar* bstrText, in int idItem);
  int SetDefaultSearchUrl(in wchar* bstrUrl);
  int NavigateToDefaultSearch();
  int IsRestricted(in wchar* bstrGuid, out short pVal);
  int get_ShellFeaturesEnabled(out short pVal);
  int get_SearchAssistantDefault(out short pVal);
  int get_Searches(out ISearches ppid);
  int get_InWebFolder(out short pVal);
  int PutProperty(in short bPerLocale, in wchar* bstrName, in wchar* bstrValue);
  int GetProperty(in short bPerLocale, in wchar* bstrName, out wchar* pbstrValue);
  int set_EventHandled(in short value);
  int ResetNextMenu();
  int FindOnWeb();
  int FindFilesOrFolders();
  int FindComputer();
  int FindPrinter();
  int FindPeople();
  int GetSearchAssistantURL(in short bSubstitute, in short bCustomize, out wchar* pbstrValue);
  int NotifySearchSettingsChanged();
  int set_ASProvider(in wchar* pProvider);
  int get_ASProvider(out wchar* pProvider);
  int set_ASSetting(in int pSetting);
  int get_ASSetting(out int pSetting);
  int NETDetectNextNavigate();
  int PutFindText(in wchar* FindText);
  int get_Version(out int pVersion);
  int EncodeString(in wchar* bstrValue, in wchar* bstrCharSet, in short bUseUTF8, out wchar* pbstrResult);
}

interface ISearchAssistantOC2 : ISearchAssistantOC {
  static GUID IID = { 0x72423e8f, 0x8011, 0x11d2, 0xbe, 0x79, 0x00, 0xa0, 0xc9, 0xa8, 0x3d, 0xa2 };
  int get_ShowFindPrinter(out short pbShowFindPrinter);
}

interface ISearchAssistantOC3 : ISearchAssistantOC2 {
  static GUID IID = { 0x72423e8f, 0x8011, 0x11d2, 0xbe, 0x79, 0x00, 0xa0, 0xc9, 0xa8, 0x3d, 0xa3 };
  int get_SearchCompanionAvailable(out short pbAvailable);
  int set_UseSearchCompanion(in short pbUseSC);
  int get_UseSearchCompanion(out short pbUseSC);
}

interface _SearchAssistantEvents : IDispatch {
  static GUID IID = { 0x1611fdda, 0x445b, 0x11d2, 0x85, 0xde, 0x00, 0xc0, 0x4f, 0xa3, 0x5c, 0x89 };
  /+void OnNextMenuSelect(in int idItem);+/
  /+void OnNewSearch();+/
}

abstract class WebBrowser_V1 {
  static GUID CLSID = { 0xeab22ac3, 0x30c1, 0x11cf, 0xa7, 0xeb, 0x00, 0x00, 0xc0, 0x5b, 0xae, 0x0b };
  mixin CoInterfaces!(IWebBrowser2, IWebBrowser);
}

abstract class WebBrowser {
  static GUID CLSID = { 0x8856f961, 0x340a, 0x11d0, 0xa9, 0x6b, 0x00, 0xc0, 0x4f, 0xd7, 0x05, 0xa2 };
  mixin CoInterfaces!(IWebBrowser2, IWebBrowser);
}

abstract class InternetExplorer {
  static GUID CLSID = { 0x0002df01, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 };
  mixin CoInterfaces!(IWebBrowser2, IWebBrowserApp);
}

abstract class ShellBrowserWindow {
  static GUID CLSID = { 0xc08afd90, 0xf2a1, 0x11d1, 0x84, 0x55, 0x00, 0xa0, 0xc9, 0x1f, 0x38, 0x80 };
  mixin CoInterfaces!(IWebBrowser2, IWebBrowserApp);
}

abstract class ShellWindows {
  static GUID CLSID = { 0x9ba05972, 0xf6a8, 0x11cf, 0xa4, 0x42, 0x00, 0xa0, 0xc9, 0x0a, 0x8f, 0x39 };
  mixin CoInterfaces!(IShellWindows);
}

abstract class ShellUIHelper {
  static GUID CLSID = { 0x64ab4bb7, 0x111e, 0x11d1, 0x8f, 0x79, 0x00, 0xc0, 0x4f, 0xc2, 0xfb, 0xe1 };
  mixin CoInterfaces!(IShellUIHelper);
}

abstract class ShellNameSpace {
  static GUID CLSID = { 0x55136805, 0xb2de, 0x11d1, 0xb9, 0xf2, 0x00, 0xa0, 0xc9, 0x8b, 0xc5, 0x47 };
  mixin CoInterfaces!(IShellNameSpace);
}

abstract class ShellShellNameSpace {
  static GUID CLSID = { 0x2f2f1f96, 0x2bc1, 0x4b1c, 0xbe, 0x28, 0xea, 0x37, 0x74, 0xf4, 0x67, 0x6a };
  mixin CoInterfaces!(IShellNameSpace);
}

abstract class CScriptErrorList {
  static GUID CLSID = { 0xefd01300, 0x160f, 0x11d2, 0xbb, 0x2e, 0x00, 0x80, 0x5f, 0xf7, 0xef, 0xca };
  mixin CoInterfaces!(IScriptErrorList);
}

abstract class SearchAssistantOC {
  static GUID CLSID = { 0xb45ff030, 0x4447, 0x11d2, 0x85, 0xde, 0x00, 0xc0, 0x4f, 0xa3, 0x5c, 0x89 };
  mixin CoInterfaces!(ISearchAssistantOC3);
}

abstract class ShellSearchAssistantOC {
  static GUID CLSID = { 0x2e71fd0f, 0xaab1, 0x42c0, 0x91, 0x46, 0x6d, 0x2c, 0x4e, 0xdc, 0xf0, 0x7d };
  mixin CoInterfaces!(ISearchAssistantOC3);
}
